home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 June / PersonalComputerWorld-June2009-CoverdiscCD.iso / Software / Freeware / Adobe AIR 1.5.1 / AdobeAIRInstaller.exe / setup.swf / scripts / mx / preloaders / Preloader.as < prev   
Encoding:
Text File  |  2009-02-12  |  8.7 KB  |  244 lines

  1. package mx.preloaders
  2. {
  3.    import flash.display.DisplayObject;
  4.    import flash.display.LoaderInfo;
  5.    import flash.display.MovieClip;
  6.    import flash.display.Sprite;
  7.    import flash.events.ErrorEvent;
  8.    import flash.events.Event;
  9.    import flash.events.IEventDispatcher;
  10.    import flash.events.IOErrorEvent;
  11.    import flash.events.ProgressEvent;
  12.    import flash.events.TimerEvent;
  13.    import flash.utils.Timer;
  14.    import mx.core.RSLItem;
  15.    import mx.core.RSLListLoader;
  16.    import mx.core.ResourceModuleRSLItem;
  17.    import mx.core.mx_internal;
  18.    import mx.events.FlexEvent;
  19.    import mx.events.RSLEvent;
  20.    
  21.    use namespace mx_internal;
  22.    
  23.    public class Preloader extends Sprite
  24.    {
  25.       mx_internal static const VERSION:String = "3.0.0.0";
  26.       
  27.       private var app:IEventDispatcher = null;
  28.       
  29.       private var showDisplay:Boolean;
  30.       
  31.       private var timer:Timer;
  32.       
  33.       private var rslDone:Boolean = false;
  34.       
  35.       private var displayClass:IPreloaderDisplay = null;
  36.       
  37.       private var rslListLoader:RSLListLoader;
  38.       
  39.       public function Preloader()
  40.       {
  41.          super();
  42.       }
  43.       
  44.       private function getByteValues() : Object
  45.       {
  46.          var _loc1_:LoaderInfo = root.loaderInfo;
  47.          var _loc2_:int = int(_loc1_.bytesLoaded);
  48.          var _loc3_:int = int(_loc1_.bytesTotal);
  49.          var _loc4_:int = !!rslListLoader ? rslListLoader.getItemCount() : 0;
  50.          var _loc5_:int = 0;
  51.          while(_loc5_ < _loc4_)
  52.          {
  53.             _loc2_ += rslListLoader.getItem(_loc5_).loaded;
  54.             _loc3_ += rslListLoader.getItem(_loc5_).total;
  55.             _loc5_++;
  56.          }
  57.          return {
  58.             "loaded":_loc2_,
  59.             "total":_loc3_
  60.          };
  61.       }
  62.       
  63.       private function appProgressHandler(param1:Event) : void
  64.       {
  65.          dispatchEvent(new FlexEvent(FlexEvent.INIT_PROGRESS));
  66.       }
  67.       
  68.       private function dispatchAppEndEvent(param1:Object = null) : void
  69.       {
  70.          dispatchEvent(new FlexEvent(FlexEvent.INIT_COMPLETE));
  71.          if(!showDisplay)
  72.          {
  73.             displayClassCompleteHandler(null);
  74.          }
  75.       }
  76.       
  77.       private function ioErrorHandler(param1:IOErrorEvent) : void
  78.       {
  79.       }
  80.       
  81.       private function appCreationCompleteHandler(param1:FlexEvent) : void
  82.       {
  83.          dispatchAppEndEvent();
  84.       }
  85.       
  86.       mx_internal function rslErrorHandler(param1:ErrorEvent) : void
  87.       {
  88.          var _loc2_:int = rslListLoader.getIndex();
  89.          var _loc3_:RSLItem = rslListLoader.getItem(_loc2_);
  90.          var _loc4_:RSLEvent = new RSLEvent(RSLEvent.RSL_ERROR);
  91.          _loc4_.bytesLoaded = 0;
  92.          _loc4_.bytesTotal = 0;
  93.          _loc4_.rslIndex = _loc2_;
  94.          _loc4_.rslTotal = rslListLoader.getItemCount();
  95.          _loc4_.url = _loc3_.urlRequest;
  96.          _loc4_.errorText = decodeURI(param1.text);
  97.          dispatchEvent(_loc4_);
  98.       }
  99.       
  100.       public function initialize(param1:Boolean, param2:Class, param3:uint, param4:Number, param5:Object, param6:String, param7:Number, param8:Number, param9:Array = null, param10:Array = null, param11:Array = null, param12:Array = null) : void
  101.       {
  102.          var _loc13_:int = 0;
  103.          var _loc14_:int = 0;
  104.          var _loc15_:RSLItem = null;
  105.          var _loc16_:ResourceModuleRSLItem = null;
  106.          if((param9 != null || param10 != null) && param11 != null)
  107.          {
  108.             throw new Error("RSLs may only be specified by using libs and sizes or rslList, not both.");
  109.          }
  110.          root.loaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
  111.          if(Boolean(param9) && param9.length > 0)
  112.          {
  113.             if(param11 == null)
  114.             {
  115.                param11 = [];
  116.             }
  117.             _loc13_ = int(param9.length);
  118.             _loc14_ = 0;
  119.             while(_loc14_ < _loc13_)
  120.             {
  121.                _loc15_ = new RSLItem(param9[_loc14_]);
  122.                param11.push(_loc15_);
  123.                _loc14_++;
  124.             }
  125.          }
  126.          if(Boolean(param12) && param12.length > 0)
  127.          {
  128.             _loc13_ = int(param12.length);
  129.             _loc14_ = 0;
  130.             while(_loc14_ < _loc13_)
  131.             {
  132.                _loc16_ = new ResourceModuleRSLItem(param12[_loc14_]);
  133.                param11.push(_loc16_);
  134.                _loc14_++;
  135.             }
  136.          }
  137.          rslListLoader = new RSLListLoader(param11);
  138.          this.showDisplay = param1;
  139.          timer = new Timer(10);
  140.          timer.addEventListener(TimerEvent.TIMER,timerHandler);
  141.          timer.start();
  142.          if(param1)
  143.          {
  144.             displayClass = new param2();
  145.             displayClass.addEventListener(Event.COMPLETE,displayClassCompleteHandler);
  146.             addChild(DisplayObject(displayClass));
  147.             displayClass.backgroundColor = param3;
  148.             displayClass.backgroundAlpha = param4;
  149.             displayClass.backgroundImage = param5;
  150.             displayClass.backgroundSize = param6;
  151.             displayClass.stageWidth = param7;
  152.             displayClass.stageHeight = param8;
  153.             displayClass.initialize();
  154.             displayClass.preloader = this;
  155.          }
  156.          if(rslListLoader.getItemCount() > 0)
  157.          {
  158.             rslListLoader.load(mx_internal::rslProgressHandler,mx_internal::rslCompleteHandler,mx_internal::rslErrorHandler,mx_internal::rslErrorHandler,mx_internal::rslErrorHandler);
  159.          }
  160.          else
  161.          {
  162.             rslDone = true;
  163.          }
  164.       }
  165.       
  166.       mx_internal function rslProgressHandler(param1:ProgressEvent) : void
  167.       {
  168.          var _loc2_:int = rslListLoader.getIndex();
  169.          var _loc3_:RSLItem = rslListLoader.getItem(_loc2_);
  170.          var _loc4_:RSLEvent = new RSLEvent(RSLEvent.RSL_PROGRESS);
  171.          _loc4_.bytesLoaded = param1.bytesLoaded;
  172.          _loc4_.bytesTotal = param1.bytesTotal;
  173.          _loc4_.rslIndex = _loc2_;
  174.          _loc4_.rslTotal = rslListLoader.getItemCount();
  175.          _loc4_.url = _loc3_.urlRequest;
  176.          dispatchEvent(_loc4_);
  177.       }
  178.       
  179.       public function registerApplication(param1:IEventDispatcher) : void
  180.       {
  181.          param1.addEventListener("validatePropertiesComplete",appProgressHandler);
  182.          param1.addEventListener("validateSizeComplete",appProgressHandler);
  183.          param1.addEventListener("validateDisplayListComplete",appProgressHandler);
  184.          param1.addEventListener(FlexEvent.CREATION_COMPLETE,appCreationCompleteHandler);
  185.          this.app = param1;
  186.       }
  187.       
  188.       mx_internal function rslCompleteHandler(param1:Event) : void
  189.       {
  190.          var _loc2_:int = rslListLoader.getIndex();
  191.          var _loc3_:RSLItem = rslListLoader.getItem(_loc2_);
  192.          var _loc4_:RSLEvent = new RSLEvent(RSLEvent.RSL_COMPLETE);
  193.          _loc4_.bytesLoaded = _loc3_.total;
  194.          _loc4_.bytesTotal = _loc3_.total;
  195.          _loc4_.rslIndex = _loc2_;
  196.          _loc4_.rslTotal = rslListLoader.getItemCount();
  197.          _loc4_.url = _loc3_.urlRequest;
  198.          dispatchEvent(_loc4_);
  199.          rslDone = _loc2_ + 1 == _loc4_.rslTotal;
  200.       }
  201.       
  202.       private function timerHandler(param1:TimerEvent) : void
  203.       {
  204.          if(!root)
  205.          {
  206.             return;
  207.          }
  208.          var _loc2_:Object = getByteValues();
  209.          var _loc3_:int = int(_loc2_.loaded);
  210.          var _loc4_:int = int(_loc2_.total);
  211.          dispatchEvent(new ProgressEvent(ProgressEvent.PROGRESS,false,false,_loc3_,_loc4_));
  212.          if(rslDone && (_loc3_ >= _loc4_ && _loc4_ > 0 || _loc4_ == 0 && _loc3_ > 0 || root is MovieClip && MovieClip(root).totalFrames > 2 && MovieClip(root).framesLoaded >= 2))
  213.          {
  214.             timer.removeEventListener(TimerEvent.TIMER,timerHandler);
  215.             timer.reset();
  216.             dispatchEvent(new Event(Event.COMPLETE));
  217.             dispatchEvent(new FlexEvent(FlexEvent.INIT_PROGRESS));
  218.          }
  219.       }
  220.       
  221.       private function displayClassCompleteHandler(param1:Event) : void
  222.       {
  223.          if(displayClass)
  224.          {
  225.             displayClass.removeEventListener(Event.COMPLETE,displayClassCompleteHandler);
  226.          }
  227.          if(root)
  228.          {
  229.             root.loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
  230.          }
  231.          if(app)
  232.          {
  233.             app.removeEventListener("validatePropertiesComplete",appProgressHandler);
  234.             app.removeEventListener("validateSizeComplete",appProgressHandler);
  235.             app.removeEventListener("validateDisplayListComplete",appProgressHandler);
  236.             app.removeEventListener(FlexEvent.CREATION_COMPLETE,appCreationCompleteHandler);
  237.             app = null;
  238.          }
  239.          dispatchEvent(new FlexEvent(FlexEvent.PRELOADER_DONE));
  240.       }
  241.    }
  242. }
  243.  
  244.